using System;
using System.IO;
using System.Text;
using System.Collections.Generic;

namespace Neural {

    class FileReader {

        public string fileName = null;
        public List<string> archivo = new List<string>(100);

        public FileReader () {
            fileName = "NN_data.txt";
        }

        public FileReader (String fileName) {
            if (fileName != "") {
                this.fileName = fileName;
            }
        }

        public double[,] read () {

            try {
                // Abre el archivo
                StreamReader re = File.OpenText(fileName);

                // Linea de texto
                string input = null;

                // Separador del arhivo
                char[] charSeparators = new char[] { ' ' };

                input = re.ReadLine();
                archivo.Add(input);
                string[] entradas = input.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);

                while ((input = re.ReadLine()) != null) {

                    archivo.Add(input);
                }

                re.Close();

                double[,] matriz = new double[archivo.Count, entradas.Length];

                int lineasArchivo = 0;

                foreach (string s in archivo) {
                    string[] ensa = s.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);

                    for (int i = 0; i < ensa.Length; i++) {
                        matriz[lineasArchivo, i] = Double.Parse(ensa[i]);
                    }
                    lineasArchivo++;
                }

                return matriz;
            } catch (FileNotFoundException ex) {
                Console.WriteLine(ex);
                throw new FileNotFoundException();
            } catch (ArgumentException ex) {
                Console.WriteLine(ex);
                throw new ArgumentException();
            } catch (FormatException ex) {
                Console.WriteLine(ex);
                throw new FormatException();
            } catch (DirectoryNotFoundException ex) {
                Console.WriteLine(ex);
                throw new DirectoryNotFoundException();
            }
        }
    }
}